From 5cb1c606bbfc05b828b78d0c7657855b957c2d8c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 6 Jan 2018 17:53:20 -0500 Subject: [PATCH] spin button: Stop using ::focus-out-event Just use the generic ::event signal. --- gtk/gtkspinbutton.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index 7776c27053..af5784bfd3 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -258,8 +258,8 @@ static void gtk_spin_button_size_allocate (GtkWidget *widget, const GtkAllocation *allocation, int baseline, GtkAllocation *out_clip); -static gint gtk_spin_button_focus_out (GtkWidget *widget, - GdkEventFocus *event); +static gboolean gtk_spin_button_event (GtkWidget *widget, + GdkEvent *event); static void gtk_spin_button_grab_notify (GtkWidget *widget, gboolean was_grabbed); static void gtk_spin_button_state_flags_changed (GtkWidget *widget, @@ -321,7 +321,7 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class) widget_class->measure = gtk_spin_button_measure; widget_class->size_allocate = gtk_spin_button_size_allocate; widget_class->key_release_event = gtk_spin_button_key_release; - widget_class->focus_out_event = gtk_spin_button_focus_out; + widget_class->event = gtk_spin_button_event; widget_class->grab_notify = gtk_spin_button_grab_notify; widget_class->state_flags_changed = gtk_spin_button_state_flags_changed; @@ -1086,16 +1086,27 @@ gtk_spin_button_size_allocate (GtkWidget *widget, gtk_widget_size_allocate (priv->box, allocation, baseline, out_clip); } -static gint -gtk_spin_button_focus_out (GtkWidget *widget, - GdkEventFocus *event) +static gboolean +gtk_spin_button_event (GtkWidget *widget, + GdkEvent *event) { GtkSpinButton *spin_button = GTK_SPIN_BUTTON (widget); - if (gtk_editable_get_editable (GTK_EDITABLE (spin_button->priv->entry))) - gtk_spin_button_update (spin_button); + if (gdk_event_get_event_type (event) == GDK_FOCUS_CHANGE) + { + gboolean focus_in; + + gdk_event_get_focus_in (event, &focus_in); + if (!focus_in) + { + if (gtk_editable_get_editable (GTK_EDITABLE (spin_button->priv->entry))) + gtk_spin_button_update (spin_button); + } + + return GDK_EVENT_PROPAGATE; + } - return GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->focus_out_event (widget, event); + return GDK_EVENT_PROPAGATE; } static void -- 2.30.2